package jm.nj.demo11main.demo05;

import java.io.*;

/*
 * 复制单层文件夹:遍历文件夹,读取一个文件,写入一个文件
 *

 *
 * 操作流程:
 * 	1.创建一个数据目的地的文件夹d:\\demo
 * 		判断是否存在该文件夹,不存在则创建
 * 	2.使用File类的方法遍历数据源的文件夹,获取所有的文件的字符串路径(IO数据源)
 * 	3.通过File类的方法,获取遍历得到的文件的名称
 * 	4.拼接IO复制文件的数据目的地
 * 	5.封装一个IO流复制文件的方法
 * 	6.调用文件的方法,传入数据源和数据目的地复制文件
 *
 */
public class Demo01CopyDir {
    public static void main(String[] args) throws IOException {
        //1.创建目的File
        File file = new File("F:\\YTM-CL");
        //判断是否存在
        if (!file.exists()) {
            file.mkdirs();
        }
        //2.遍历数据File文件夹
        File srcDir = new File("D:\\YTM-CL");
        //通过File类方法,获取文件名称
        File[] srcFileArr = srcDir.listFiles();
        for (File srcFile : srcFileArr) {
            if(!srcFile.isDirectory()) {
                File destFile = new File(file, srcFile.getName());
                copyFile(srcFile, destFile);
            }

        }

    }



    private static void copyFile(File srcFile, File destFile) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));

        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
            bos.flush();
        }
        System.out.println("end");
    }


}

